
package com.x52im.rbchat.logic.profile.voice;

import android.content.Context;

import com.x52im.rbchat.Const;
import com.x52im.rbchat.MyApplication;
import com.x52im.rbchat.utils.ToolKits;

import java.io.File;

/**
 * 个人介绍语音文件留言实用方法辅助类.
 * 
 * @author Jack Jiang(http://www.52im.net/space-uid-1.html)
 * @since 2.5
 */
public class UploadPVoiceHelper
{
	private final static String TAG = UploadPVoiceHelper.class.getSimpleName();
	
	// 遗留在SD卡上的老的语音文件最长时间（目的是用于清理那些未被正常处理完成的临时文件）
	public final static long MAX_TIME_FOR_OLD_VOICE_FILE = 1 * 60 * 60 * 1000; // 1小时
	// 处理完成前的语音文件临时文件名前缀
	public final static String TEMP_VOICE_FILE_NAME_PREFIX = "temp_";
	// 允许发送的最小时长（单位：秒）
	public final static long MIN_DURATION_FOR_SEND = 1;
	// 允许发送的最大时长（单位：毫秒）
	public final static long MAX_DURATION_FOR_SEND = 60 * 1000;

	/**
	 * 返回存储发送语音留言的目录（结尾带反斜线）.
	 * 
	 * @param context
	 * @return 如果SDCard等正常则返回目标路径，否则返回null
	 */
	public static String getSendVoiceSavedDirHasSlash(Context context)
	{
		String dir = getSendVoiceSavedDir(context);
		
		return dir ==  null? null : (dir + "/");
	}
	/**
	 * 返回存储发送语音留言的目录.
	 * 
	 * @param context
	 * @return 如果SDCard等正常则返回目标路径，否则返回null
	 */
	public static String getSendVoiceSavedDir(Context context)
	{
		String dir = null;
		File sysExternalStorageDirectory = ToolKits.getDefaultCacheDir();//Environment.getExternalStorageDirectory();
		if(sysExternalStorageDirectory != null && sysExternalStorageDirectory.exists())
		{
			dir = sysExternalStorageDirectory.getAbsolutePath() + Const.DIR_KCHAT_PVOICE_RELATIVE_DIR;
		}
		
		return dir;
	}
	
	/**
	 * 获得下载指定个人介绍语音留言文件的声音2进制数据的完整http地址.
	 * <p>
	 * 形如：“http://192.168.88.138:8080/BinaryDownloader?
	 * action=pvoice_d&user_uid=400007&file_name=120_91c3e0d81b2039caa9c9899668b249e8.amr”。
	 * 
	 * @param context
	 * @param file_name 要下载的语音留言文件名
	 */
	public static String getVoiceDownloadURL(Context context, String file_name)
	{
		String fileURL = null;
		if(MyApplication.getInstance(context).getIMClientManager().getLocalUserInfo() != null)
			fileURL = Const.BBONERAY_DOWNLOAD_CONTROLLER_URL_ROOT
				+"?action=pvoice_d"
				// 要下载语音文件的用户uid
				+"&user_uid="+MyApplication.getInstance(context).getIMClientManager().getLocalUserInfo().getUser_uid()
				+"&file_name="+file_name;
		return fileURL;
	}
}
